import 'package:api/pages/provider/getX/demo/route/test_a_page.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

class RouteHomePage extends StatefulWidget {
  @override
  _RouteHomePageState createState() => _RouteHomePageState();
}

class _RouteHomePageState extends State<RouteHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        width: double.infinity,
        height: double.infinity,
        child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: () {
                  funA();
                },
                child: Text("动态路由打开A页面"),
              ),
              ElevatedButton(
                onPressed: () {
                  funB();
                },
                child: Text("静态路由打开A页面"),
              ),
              ElevatedButton(
                onPressed: () {
                  funC();
                },
                child: Text("getX动态路由打开A页面"),
              ),
              ElevatedButton(
                onPressed: () {
                  funD();
                },
                child: Text("getX静态路由打开A页面"),
              ),
              ElevatedButton(
                onPressed: () {
                  funJ();
                },
                child: Text("动态路由打开A页面 获取页面传值"),
              ),
              ElevatedButton(
                onPressed: () {
                  funE();
                },
                child: Text("getX动态路由打开A页面 获取页面传值"),
              ),
              ElevatedButton(
                onPressed: () {
                  funF();
                },
                child: Text("普通方式打开新页面替换当前页面"),
              ),
              ElevatedButton(
                onPressed: () {
                  funG();
                },
                child: Text("getX打开新页面替换当前页面"),
              ),
              ElevatedButton(
                onPressed: () {
                  funH();
                },
                child: Text("普通方式打开新页面关闭之前所有页面"),
              ),
              ElevatedButton(
                onPressed: () {
                  funI();
                },
                child: Text("getX打开新页面关闭之前所有页面"),
              ),
            ]),
      ),
    );
  }

// 动态路由打开A页面
  void funA() {
    Navigator.of(context)
        .push(new MaterialPageRoute(builder: (BuildContext context) {
      return new TestAPage();
    }));
  }

// 静态路由打开A页面
  void funB() {
    Navigator.of(context).pushNamed("/testa");
  }

  // getX动态路由打开A页面
  void funC() {
    Get.to(() => new TestAPage());
  }

// 静态路由打开A页面
  void funD() {
    Get.toNamed("/testa");
  }

  // getX动态路由打开A页面 获取页面传值
  void funE() async {
    var value = await Get.to(() => new TestAPage());
    print("A 页面传过来的值 $value");
  }

  // 普通方式打开新页面替换当前页面
  void funF() {
    Navigator.of(context)
        .pushReplacement(new MaterialPageRoute(builder: (BuildContext context) {
      return new TestAPage();
    }));
  }

  // getX打开新页面替换当前页面
  void funG() {
    Get.off(() => new TestAPage());
  }

// 普通方式打开新页面关闭之前所有页面
  void funH() {
    Navigator.of(context).pushAndRemoveUntil(
        new MaterialPageRoute(builder: (BuildContext context) {
      return new TestAPage();
    }), (Route route) => false);
  }

// getX打开新页面关闭之前所有页面
  void funI() {
    Get.offAll(() => new TestAPage());
  }

  // 动态路由打开A页面 获取页面传值
  void funJ() {
    Navigator.of(context).push(new MaterialPageRoute(builder: (_) {
      return new TestAPage();
    })).then((value) {
      if (value != null) {
        print("A 页面传过来的值 $value");
      }
    });
  }
}
